%% 函数或者脚本说明
%{
- --------------------------------------------------
* 文件名:split2individual
* 函数名:None
* 功 能:将CST合并导出的txt分成若干个txt，每个txt的包含一个变量对应的值
* 变量说明:
-- name_pool 设置变量范围 很重要
-- Input_file_name 输入的文件名 很重要
-- 以上两个变量是必要和重要的
* 注意事项:
一定要设置上述两个变量
分割好后，再用change_pars或data_main脚本处理
可以选择是否保留前三行标题

- --------------------------------------------------
%}

fclose all; clear; clc;
% //////////////////////////////
Input_diretory = ".\Input Results\"; % % 输入数据
% 在这里输入文件的名字
Input_file_name = 'theta 0-12';
txtin = fopen(Input_diretory + [Input_file_name, '.txt'], 'r'); %源文件
clear Input_diretory;
% //////////////////////////////

% \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
%% 设置区
save_title_flag = 1;
next_is_data_flag = 0;
line_count_flag = 0;
file_count = 1; % 分割的文件计数
% ******************
name_pool = 0:3:12; %设置变量范围
% *****************
% \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
%%
% //////////////////////////////
NowTime = datestr(now, 'HH:MM:SS');
Xuhao = [datestr(now, 'mm-dd'), '-', NowTime(1:2), '-', NowTime(4:5)];
Output_diretory = ['.\Output Results\', Input_file_name, '\', Xuhao, '\'];
mkdir(Output_diretory);
tmp_txtout = fopen('title_temp.txt', 'w'); %用来暂存前面的三行标题
% //////////////////////////////

%% 开始读取
while ~feof(txtin) %判断是否为文件末尾
    tline = fgetl(txtin); %读取一行
    %% # 行处理
    if tline(1) == '#' %是否为#开头
        line_count_flag = line_count_flag + 1;
        fprintf(tmp_txtout, '%s\n', tline); % 写入文档

        if line_count_flag == 3
            line_count_flag = 0;
            next_is_data_flag = 1;
            tmp = strcat(Output_diretory, num2str(name_pool(file_count)), '.txt'); %保存文件时连续命名
            fclose(tmp_txtout);
            txtout = fopen(tmp, 'w'); %新文件，用于写入不含空行的数据
            file_count = file_count + 1;
        end

    else
        % 进行到这里表示前面的标题行已经处理完成，开始数据行处理
        if next_is_data_flag
            next_is_data_flag = 0;

            if save_title_flag % 如果需要保存标题，则进入这里

                tmp_txtout = fopen('title_temp.txt', 'r');

                while ~feof(tmp_txtout)
                    tmp_tline = fgetl(tmp_txtout);
                    fprintf(txtout, '%s\n', tmp_tline);
                end

                fclose(tmp_txtout);
                tmp_txtout = fopen('title_temp.txt', 'w');
            end

        end

        fprintf(txtout, '%s\n', tline);
    end

end

fclose all;
delete('title_temp.txt');
disp("Congratulations! 文件分割成功!");
disp(["分割成了", num2str(file_count), "份文件"]);
